#pragma GCC optimize(2)
#include <iostream>
#include <queue>
#include <map>
#include <unordered_map>
#include <vector>
#include <algorithm>
#include <cmath>
#include <string>
#include <cstring>
#include <set>
#include <unordered_set>
#define IOS ios::sync_with_stdio(false), cin.tie(0), cout.tie(0)
using namespace std;
typedef long long ll;
typedef unsigned long long ull;
typedef pair<int,int> pii;
const int mod=10000;

void mul(int* a,int* b,const int row,const int col)
{
	int c[row][col];
    memset(c, 0, sizeof(c));
    for(int i=0; i<row; i++)
        for(int j=0; j<col; j++)
            for(int k=0; k<col; k++)
                c[i][j] = (c[i][j] + a[i*col+k]*b[k*col+j] % mod) % mod;
    memcpy(a,c,sizeof(c));
}

void qpow(int* a,int *b,int n,int row,int col)
{
	while(n)
	{
		if((n&1)==1)
		{
			mul(a,b,row,col);
		}
		n>>=1;
		mul(b,b,row,col);
	}
}
int main()
{
	int n;
	while(cin>>n,n!=-1)
	{
		int a[2][2]={1,1,
		            0,0};
	    int b[2][2]={1,1,
		            1,0};
	    if(n==0)
	    {
	    	cout<<0<<endl; continue;
		}
	    if(n<=2)
	    {
	    	cout<<a[0][2-n]<<endl; continue;
		}
		
		int p=n-2;
		int* pa=&a[0][0];
		int* pb=&b[0][0];
		qpow(pa,pb,n-2,2,2);
		cout<<a[0][0]<<endl;
	}

	return 0;
}

